import os
import sys
import site
import sysconfig
from environs import Env
from .utils import Console


def getEnv():
    """返回环境配置

    Returns:
        dict: 包含APP_ENV, APP_DEBUG
    """
    env = Env()
    env.read_env()  # env.read_env(path='.env.test')
    return {
        'APP_ENV': env.str('APP_ENV', 'production'),
        'APP_DEBUG': env.bool('APP_DEBUG', False),
    }


def appendShared():
    return appendSysDirByFile(__file__)


def appendSysDirByFile(file):
    dir = os.path.dirname(os.path.abspath(file))
    sys.path.append(os.path.dirname(dir))
    # sys.path.append(os.getcwd())
    return dir


def showSite():
    Console.success(
        {
            'site_packages': site.getsitepackages(),
            'user_site_packages': site.getusersitepackages(),
            'user_base': site.getuserbase(),
            'sysconfig.paths': sysconfig.get_paths(),
            'sys.path': sys.path,
        }
    )


def init(root_dir):
    appendShared()
    sys.path.append(root_dir)
    env = getEnv()
    app_env = env.get('APP_ENV', 'production')
    app_debug = env.get('APP_DEBUG', False)
    return (app_env, app_debug)
